

//1分钟的毫秒数
export const Second = 1000;
export const Minute = 60000;
export const Hour = 3600000;

export const IsShowConsole: boolean = false;

//人物check变量枚举
export enum HumanCheckEnum {
    Recycle0 = 1,
    Recycle1,
    Recycle2,
    Recycle3,
    Recycle4,
    Recycle5,
    Recycle6,
    Recycle7,
}

//BOSS开大招开关的key check变量
export const BossSkillKey: number = 999;

//BOSS groupId记录位置 N变量
export const BOSSGroupIdKey: number = 99;
//BOSS 上次被攻击时间 N变量
export const BOSSLastStruckTimeKey: number = 98;

//比率是千分比还是百分比
export const MaxPercentNum = 1000;

//几率最大值
export const MaxChanceNum = 1000;

//宝宝最大叛变时间
export const MaxIntNum = 2000000000;

export enum ActorNkeyEnum {
    DamageAdd = 1,//固定伤害
    DamageCut,//格挡
    DamageAddPer,//伤害增加百分比
    DamageCutPer,//伤害减少百分比
    DamageBack,//伤害反弹值
    DamageBackPer,//伤害反弹比例

    MonDamageAdd,//怪物固定伤害
    MonDamageCut,//怪物格挡
    MonDamageAddPer,//怪物伤害增加百分比
    MonDamageCutPer,//怪物伤害减少百分比

    ShieldDamage,//对魔法盾的额外伤害
    ShieldDamagePer,//对魔法盾的额外伤害

    SlaveDis,// 宝宝射程
    SlaveDamageAdd,// 宝宝固定伤害
    SlaveDamageAddPer,// 宝宝伤害百分比
    SlaveDamageCutPer,// 宝宝减伤
    SlaveDamageCut,// 宝宝格挡
    SlaveNum,// 宝宝数量
    SlaveAddAbilityPer,// 宝宝属性继承倍率
    SlaveAddLevel,// 宝宝增加的初始等级
    SlaveAddMaxLevel,// 宝宝增加的等级上限


    // 附加技能
    SlaveLevel,//宝宝的等级
    SlaveKillNum,//宝宝的杀怪数

    NoDamageCountTag = 90,//不做伤害计算的标志
}

//角色自定义属性key的列表
export const ActorCustomKeyList = [
    ActorNkeyEnum.DamageAdd,//固定伤害
    ActorNkeyEnum.DamageCut,//格挡
    ActorNkeyEnum.DamageAddPer,//伤害增加百分比
    ActorNkeyEnum.DamageCutPer,//伤害减少百分比
    ActorNkeyEnum.DamageBack,//伤害反弹值
    ActorNkeyEnum.DamageBackPer,//伤害反弹比例

    ActorNkeyEnum.MonDamageAdd,//怪物固定伤害
    ActorNkeyEnum.MonDamageCut,//怪物格挡
    ActorNkeyEnum.MonDamageAddPer,//怪物伤害增加百分比
    ActorNkeyEnum.MonDamageCutPer,//怪物伤害减少百分比

    ActorNkeyEnum.ShieldDamage,//对魔法盾的额外伤害
    ActorNkeyEnum.ShieldDamagePer,//对魔法盾的额外伤害

    ActorNkeyEnum.SlaveDis,// 宝宝射程
    ActorNkeyEnum.SlaveDamageAdd,// 宝宝固定伤害
    ActorNkeyEnum.SlaveDamageAddPer,// 宝宝伤害百分比
    ActorNkeyEnum.SlaveDamageCutPer,// 宝宝减伤
    ActorNkeyEnum.SlaveDamageCut,// 宝宝格挡
    ActorNkeyEnum.SlaveNum,// 宝宝数量
    ActorNkeyEnum.SlaveAddAbilityPer,// 宝宝属性继承倍率
    ActorNkeyEnum.SlaveAddLevel,// 宝宝增加的初始等级
    ActorNkeyEnum.SlaveAddMaxLevel,// 宝宝增加的等级上限

]

export enum ActorSkeyEnum {
    MonName,//怪物原始名称
}

//阵营枚举
export enum CampEnum {
    NULL,
    Mon,
    Human,
}

//buff groupId枚举
export enum BuffGroupId {
    atNone,
    atMaxHP,
    atMaxMP,
    atDC,
    atDCMax,
    atMC,
    atMCMax,
    atSC,
    atSCMax,
    atTC,
    atTCMax,
    atPC,
    atPCMax,
    atWC,
    atWCMax,
    atAC,
    atACMax,
    atMAC,
    atMacMax,
    atHitPoint,
    atHitSpeed,
    atSpeedPoint,
    atLucky,
    atHealthRecover,
    atSpellRecover,
    atAntiMagic,
    atAntiPoison,
    atPoisonRecover,
    atAbsorbing,
    atRebound,
    atAttackAdd,
    atPunchHit,
    atCriticalHit,
    atPunchHitDef,
    atCriticalHitDef
}

//debuff groupId枚举
export enum DeBuffGroupId {
    atNone = 100,
    atMaxHP,
    atMaxMP,
    atDC,
    atDCMax,
    atMC,
    atMCMax,
    atSC,
    atSCMax,
    atTC,
    atTCMax,
    atPC,
    atPCMax,
    atWC,
    atWCMax,
    atAC,
    atACMax,
    atMAC,
    atMacMax,
    atHitPoint,
    atHitSpeed,
    atSpeedPoint,
    atLucky,
    atHealthRecover,
    atSpellRecover,
    atAntiMagic,
    atAntiPoison,
    atPoisonRecover,
    atAbsorbing,
    atRebound,
    atAttackAdd,
    atPunchHit,
    atCriticalHit,
    atPunchHitDef,
    atCriticalHitDef
}

export enum StatusBuffGroupId {
    stNone = 200,
    stStone, // 石化
    stDenyMove, // 禁止移动 行走 和 跑步都不允许
    stDenyWalk, // 禁止行走
    stDenyRun, // 禁止跑步
    stDenyHorseRun, //禁止骑马
    stSuperMan, // 无敌
    stSuperManForMon, // 无敌只对怪物
    stRelive, //复活
    stUnRelive, //防复活
    stObserver, // 隐身
    stObserverForMon, // 隐身只对怪物
    stDenyUseMagic, //禁止使用技能
    stDenyUseItem, //禁止使用物品
    stUnParalysis, //防麻痹
    stUnLockRun, //防蛛网
    stUnTrap, //防陷阱
    stStruckAction, //强制后仰
    stNoStruckAction//强制无后仰
}

export enum IntervalBuffGroupId {
    biNone = 300,//无效
    biCustom,//自定义
    biHP,//减少或增加HP(Args1 为数量 , Args2为万分比例)
    biMP,//减少或增加HP(Args1 为数量 , Args2为万分比例)
    biExp//减少或增加HP(Args1 为数量 , Args2为万分比例)
}

export enum CustomBuffId {
    InfernoSkill = 400,//地狱塔技能附加的buff
}



//货币类型枚举
export enum MoneyEnum {
    None,
    Gold,
    GameGold,
    GamePoint,
    GameGird,
    GameDiamond,
}

export const MoneyName = [
    '',
    '金币',
    '元宝',
    '游戏点',
    '灵符',
    '金刚石',
]


//物价类型  
export enum PriceType {
    Money,
    Item,
    ItemType,
}

export interface PriceData {
    type: PriceType,
    //type 为money代表收取货币种类  type为Item代表收取物品的名称或名称列表,type为ItemType 代表收取装备列表的等级
    name: string | Array<string> | number
    num: number
}



//概率
export interface ChanceData {
    min: number,
    max: number,
    chance: number,
}

export const HumanSkillList = [
    ["基本剑术", '攻杀剑术', '刺杀剑术', '半月弯刀', '烈火剑法', '野蛮冲撞'],
    ["疾光电影", '雷电术', '诱惑之光', '瞬息移动', '火墙', '爆裂火焰', '地狱雷光', '魔法盾', , '冰咆哮'],
    ["治愈术", '精神力战法', '施毒术', '灵魂火符', '幽灵盾', '神圣战甲术', '困魔咒', '召唤骷髅', '隐身术', '集体隐身术',
        '心灵启示', '群体治疗术', '召唤神兽'],
]

export const HumanCustomSkill = ['范围拾取', '心灵召唤']
export const GmSkill = ['秒杀', '清除', 'GM测试1', 'GM测试2']



export function getMoneyName(moneyType: MoneyEnum) {
    return MoneyName[moneyType];
}

// function TestQueue() {
//     let cb: SortQueueCompare<number> = (n1: number, n2: number) => {
//         if (n1 > n2) {
//             return 1;
//         }
//         else if (n1 == n2) {
//             return 0
//         }
//         return -1;
//     }
//     let sortQueue: SortQueue<number> = new SortQueue<number>(cb);

//     sortQueue.inQueue(2);
//     sortQueue.dequeen();
//     sortQueue.inQueue(1);
//     sortQueue.dequeen();
//     sortQueue.inQueue(10);
//     sortQueue.inQueue(5);
//     sortQueue.inQueue(3);
//     sortQueue.inQueue(2);
//     sortQueue.dequeen();

//     let cb2 = (data: number) => {

//     }

//     sortQueue.getAll(cb2);
// }
